package com.burns.java.io.RandomAccessFile;

import java.io.File;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.RandomAccessFile;

/**
 * 另外：可能有的同学输入的是中文，那么使用getBytes()转换，会占3个字节（取决你的本地编码，如果用Eclipse可设置成UTF-8），咦？
 * java里面中文不是占两个字节吗？怎么会变成3个字节呢？其实这不是一个概念，java默认字符编码的是unicode，确实占两个字节，
 * 但是在String换转byte[]时用的getBytes()默认用的编码进行转换，那么就会占3个字节，unicode和UTF-8不是一个概念，
 * 仔细观察的话会发现getBytes()方法有另外的重载getBytes("……")，例如通过getBytes("gbk")，
 * 这是转化的中文就会变成两字节了。
 * 
 * @author burns
 *
 */
public class ReadTextFromFile {
	public static void main(String[] args) {
		try {
			File f = new File("d:" + File.separator + "test.txt");
			RandomAccessFile raf = new RandomAccessFile(f, "r");// 以读模式打开
			raf.skipBytes(7);// 跳过第一个人的信息
			byte[] bs = new byte[3];
			for (int i = 0; i < bs.length; i++) {
				bs[i] = raf.readByte();
			}
			String name2 = new String(bs);
			int age2 = raf.readInt();
			System.out.println(name2 + "  " + age2);

			raf.seek(0);// 指针回到文件开头，读取第二个人的信息
			for (int i = 0; i < bs.length; i++) {
				bs[i] = raf.readByte();
			}
			String name1 = new String(bs);
			int age1 = raf.readInt();
			System.out.println(name1 + "  " + age1);
		} catch (FileNotFoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}
}
